From 6607f07cded0f25a01e540ff116f98978b9df229 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Fri, 9 Sep 2005 11:11:47 +0000 Subject: [PATCH] fixing float->int conversions --- ChangeLog | 9 +++++++++ babl/base/type-u16.c | 3 ++- babl/base/type-u32.c | 3 ++- babl/base/type-u8.c | 10 ++++------ extensions/CIE-Lab.c | 4 ++-- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0c8cb01..60a9ea7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2005-09-09 Øyvind Kolås + + * babl/base/type-u16.c: (convert_double_u16_scaled): + * babl/base/type-u32.c: (convert_double_u32_scaled): + * babl/base/type-u8.c: (convert_double_u8_scaled), + (babl_base_type_u8): + * extensions/CIE-Lab.c: (convert_double_u8_scaled), + (convert_double_u16_scaled): uintval = rint (dval * MAXINT) + 2005-09-09 Øyvind Kolås * tests/conversions.c: (validate_conversion): do relative average diff --git a/babl/base/type-u16.c b/babl/base/type-u16.c index e33997e..784e223 100644 --- a/babl/base/type-u16.c +++ b/babl/base/type-u16.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "babl.h" #include "babl-ids.h" @@ -46,7 +47,7 @@ convert_double_u16_scaled (double min_val, else if (dval > max_val) u16val = max; else - u16val = (dval-min_val) / (max_val-min_val) * (max-min) + min; + u16val = rint((dval-min_val) / (max_val-min_val) * (max-min) + min); *(uint16_t *) dst = u16val; dst += dst_pitch; diff --git a/babl/base/type-u32.c b/babl/base/type-u32.c index 94a4c09..990487c 100644 --- a/babl/base/type-u32.c +++ b/babl/base/type-u32.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "babl.h" #include "babl-ids.h" @@ -45,7 +46,7 @@ convert_double_u32_scaled (double min_val, else if (dval > max_val) u32val = max; else - u32val = (dval-min_val) / (max_val-min_val) * (max-min) + min; + u32val = rint ((dval-min_val) / (max_val-min_val) * (max-min) + min); *(uint32_t *) dst = u32val; dst += dst_pitch; diff --git a/babl/base/type-u8.c b/babl/base/type-u8.c index c874dfb..1f8b956 100644 --- a/babl/base/type-u8.c +++ b/babl/base/type-u8.c @@ -19,10 +19,12 @@ #include #include +#include #include "babl.h" #include "babl-ids.h" +#include static inline long convert_double_u8_scaled (double min_val, double max_val, @@ -44,7 +46,7 @@ convert_double_u8_scaled (double min_val, else if (dval > max_val) u8val = max; else - u8val = (dval-min_val) / (max_val-min_val) * (max-min) + min; + u8val = rint ((dval-min_val) / (max_val-min_val) * (max-min) + min); *(unsigned char *) dst = u8val; src += src_pitch; @@ -106,7 +108,7 @@ convert_double_##name (void *src, \ src, dst, src_pitch, dst_pitch, n); \ } -MAKE_CONVERSIONS (u8, 0.0, (255.0F/256.0F)*1.0, 0x00, 0xff); +MAKE_CONVERSIONS (u8, 0.0, 1.0, 0x00, UINT8_MAX); MAKE_CONVERSIONS (u8_luma, 0.0, 1.0, 16, 235); MAKE_CONVERSIONS (u8_chroma, 0.0, 1.0, 16, 240); @@ -138,7 +140,6 @@ babl_base_type_u8 (void) "max_val", 0.5, NULL ); - babl_conversion_new ( babl_type_id (BABL_U8), babl_type_id (BABL_DOUBLE), @@ -151,8 +152,6 @@ babl_base_type_u8 (void) "plane", convert_double_u8, NULL ); - - babl_conversion_new ( babl_type_id (BABL_U8_LUMA), babl_type_id (BABL_DOUBLE), @@ -165,7 +164,6 @@ babl_base_type_u8 (void) "plane", convert_double_u8_luma, NULL ); - babl_conversion_new ( babl_type_id (BABL_U8_CHROMA), babl_type_id (BABL_DOUBLE), diff --git a/extensions/CIE-Lab.c b/extensions/CIE-Lab.c index f00710a..d8aa6db 100644 --- a/extensions/CIE-Lab.c +++ b/extensions/CIE-Lab.c @@ -312,7 +312,7 @@ convert_double_u8_scaled (double min_val, else if (dval > max_val) u8val = max; else - u8val = (dval-min_val) / (max_val-min_val) * (max-min) + min; + u8val = rint ((dval-min_val) / (max_val-min_val) * (max-min) + min); *(unsigned char *) dst = u8val; src += src_pitch; @@ -452,7 +452,7 @@ convert_double_u16_scaled (double min_val, else if (dval > max_val) u16val = max; else - u16val = (dval-min_val) / (max_val-min_val) * (max-min) + min; + u16val = rint ((dval-min_val) / (max_val-min_val) * (max-min) + min); *(unsigned short *) dst = u16val; dst += dst_pitch; -- 2.30.2